#include <iostream>


//返回类型推导    后置 auto一般与decltype结合
template<typename T,typename U>
auto func(T a,U b)->decltype(a+b) //返回类型后置语法
{

    return a+b;
}


//泛化
template<typename T,typename U>
void tfunc(T &val1,U& val2){
    std::cout<<"泛化"<<std::endl;
}

//全特化等价于实例化一个函数模板
template<>
void tfunc<int,double>(int& v1,double& v2){  //<int double>可以省略
    std::cout<<"全特化"<<std::endl;
}

//偏特化，通过函数重装概得形式实现偏特化
//范围上变小也不可

//参数数量上不可偏特化**********
#if 0
template<typename U>
void tfunc<int,U>(int& v1,U&v2){
            //.........
}
#endif







